package principal;

import tsb.sax.ContentHandlerModel;
import tsb.sax.SAXException;
import tsb.util.AtributoValor;

/**
 * define todos los eventos que se producen a lo largo del documento.
 * implementacion del content handler Model que carga el dom
 */
public class ContentHandler implements ContentHandlerModel {

    public ContentHandler() {

    }

    public void inicioDocumento() throws SAXException {
        printConsola("## comiezo del documento ##");
    }

    public void finDocumento() throws SAXException {
        printConsola("## final del documento ##");
    }

    public void tagInicio(String nombreTag, String tagLeido, AtributoValor[] variables) throws SAXException {
        this.printConsola("Elemento : " + nombreTag);
        
        if(variables.length > 0){
            this.printConsola(" ");
            this.printConsola("Atributos ------------- ");
            for(int i = 0; i< variables.length; i++){
                this.printConsola("i = " + String.valueOf(i) +
                                  " - "  + variables[i].getNombre() +
                                  " = "  + variables[i].getValor()
                                  );
            }
        }
    }

    public void tagFinal(String nombreTag, String tagLeido) throws SAXException {
        this.printConsola("Fin elemento: " + nombreTag);
    }

    public void addContenido(String contenido) throws SAXException {
        this.printConsola(contenido);
    }

    public void prologoXML(AtributoValor[] variables) throws SAXException {
        this.printConsola(variables);
    }

    private void printConsola(String msg) {
        System.out.println(msg);
    }

    private void printConsola(AtributoValor[] prologo) {
        String msg = "DocInfo:";

        for (int i = 0; i < prologo.length; i++) {
            AtributoValor atributos = prologo[i];
            msg += "\n\t" + atributos.toString();
        }

        System.out.println(msg);
    }
}
